#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
#include<assert.h>


//1.输出的什么？
/*
int main()
{

	char a = -1;
	//10000000000000000000000000000001
	//11111111111111111111111111111110
	//11111111111111111111111111111111
	//11111111 整形提升
	signed char b = -1;
	//11111111
	unsigned char c = -1;
	//11111111
	printf("a=%d,b=%d,c=%d", a, b, c);
	//a=-1,b=-1,c=255

//补充：
//1.char到底是signedchar还是unsignedchar？
//C语言标准并没有规定，取决于编译器
	//大部分编译器是 singed
	//int是signed int
	//short是signed short
	return 0;
}
*/

/*
//2.输出的什么？
int main() 
{
	char a = -128;
	//10000000000000000000000010000000 -原码
	//111111111111111111111111101111111 -反码
	//111111111111111111111111110000000 -补码
	//10000000   高位补1
	//111111111111111111111111110000000 --整形提升   
	printf("%u\n", a); //u认为是无符号 直接打印
	//打印：4294967168
	return 0;
}
*/

/*
//3.输出的什么？
int main() {
	char a = 128;
	//00000000000000000000000010000000 -原反补相同
	//10000000   高位补1
	//111111111111111111111111110000000 --整形提升   
	printf("%u\n", a); //u认为是无符号 直接打印
	//打印：4294967168
	return 0;


//补充：
	//char类型变量的取值范围：
	//有符号的char的取值范图是： - 128~127
}
*/

//4.输出的什么？
int main()
{
	//内存补用码，打印用原码
	int i = -20;
	//10000000000000000000000000010100 -原码
	//11111111111111111111111111101011 -反码
	//11111111111111111111111111101100 -补码
	unsigned int j = 10; 
	//00000000000000000000000000001010 -正数 原反补相同
	printf("%d\n", i + j);
	//11111111111111111111111111101100
	//00000000000000000000000000001010
	//11111111111111111111111111110110  -补码

	//11111111111111111111111111110101  - 补码减一 得反码
	//10000000000000000000000000001010  -> -10



	//打印：-10
	return 0;
}

/*
int main()
{
	unsigned int i;
	for ( i = 9; i >=0; i--) //unsigned int类 定义无符号整数
		//进入死循环
	{
		printf("%u\n", i);
	}
	return 0;
}
*/


/*
int main()
{
	char a[1000];
	int i;
	for ( i = 0; i < 1000;i++)
	{
		a[i] = -1 - i;
		//-1 -2 -3 ... -127 -128  127 126 125 ..3 2 1 0 -1 -2 .. -127 -128 1w7..
	}
	//127+127 =255
	printf("%d", strlen(a));   //找到 \0 ->0
	//char a='0'; 把c初始化为字符0， ascii码值是0x30，char a=0; 把c初始化为ascii码值0， 也就是字符串结束符那个， 等效于'\0'
	return 0;
}
*/

/*
unsigned char i = 0;
int main()
{
	for ( i = 0; i <=255; i++) // 无符号 unsigned char 取值范围 0-255
	{          //死循环
		printf("hello wolrd \n");
	}
	return 0;
}
*/